package top.andnux.chain.service;

import java.util.List;

import top.andnux.chain.encrypt.Encrypt;
import top.andnux.chain.entity.WalletEntity;

public interface WalletService {

    /**
     * 设置私钥加密方式
     * 可以不用设置，采用默认实现
     * 如果设置 一定要在使用前设置
     * 一旦确定后就不要更改，老账户可能解密失败
     *
     * @param encrypt
     */
    void setKeyEncrypt(Encrypt encrypt);

    /**
     * 设置基地址
     *
     * @param url
     */
    void setBaseUrl(String url);


    /**
     * 创建一个钱包
     *
     * @return
     */
    WalletEntity generateWallet(Long uid, String name, String pwd) throws Exception;

    /**
     * 私钥导入
     *
     * @param uid        //用户ID
     * @param name        //用户名
     * @param pwd        //密码
     * @param privateKey //私钥
     */

    void importByPrivateKey(Long uid, String name, String pwd, String privateKey) throws Exception;


    /**
     * 查询用户钱包
     *
     * @param uid //用户ID
     * @return
     */
    List<WalletEntity> queryAll(Long uid);

    /**
     * 更新钱包
     *
     * @param entity
     * @return
     */
    void update(WalletEntity entity);

    /**
     * 删除钱包
     *
     * @param entity
     * @return
     */
    void delete(WalletEntity entity);
}
